/*************************************************************************
	> File Name: pthread_zombie.c
	> Author: Angel Criss
	> Mail: abbytsing@gmail.com 
	> Created Time: 六  7/19 16:06:54 2014
 ************************************************************************/
/*在创建一个线程后在主线程中调用pthread_exit(NULL) [不一定用NULL,任何(void *)都可以]
 *相当于父进程创建子进程后没有等待(wait(NULL))(这里相当于pthread_join())而且不是调用
 exit()退出(调用exit()则产生orphan被init reaped)

 不同的是这个可以被信号杀死(能被signal杀死的还叫僵尸吗？。。。)
 ps -au 显示的 状态 STAT 是 ZN1(也许是ZNl,这里不是数字1而是字母l)

 */
#include<errno.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<pthread.h>

void err(int return_status,char *ERR){
    if(return_status!=0)
    {
        perror(ERR);
        exit(return_status);
    }
}

void *func(void *arg){
    char *line=(char *)arg;
    printf("%s",line);
    for(;;);
}

int main(int argc,char *argv[]){
    pthread_t pd; // pd: P threa D
    int s; // status

    s=pthread_create(&pd,NULL,func,"start pthread\n");
        err(s,"pthread_create");

    sleep(5);

    pthread_exit(NULL); // 可见在此并不是调用的exit()，可能是发送的某种信号
}
